﻿//////////////////////////////////////////////////////////////////////////////// 
// ПРОЦЕДУРЫ И ФУНКЦИИ 
//       

// Процедура помещает результаты подбора в хранилище
&НаСервере
Процедура ЗаписатьПодборВХранилище() 
	ПоместитьВоВременноеХранилище(Товары.Выгрузить(), АдресТоваровДокумента);
КонецПроцедуры

&НаКлиенте
Процедура ДобавитьТовар(Товар)
	Строки = Товары.НайтиСтроки(Новый Структура("Товар", Товар));
	Если Строки.Количество() > 0 Тогда
		Элемент = Строки[0];
		Элемент.Количество = Строки[0].Количество + 1;
	Иначе 
		Элемент = Товары.Добавить();
		Элемент.Товар = Товар;
		Элемент.Количество = 1;
	КонецЕсли;	
	
	Элементы.Товары.ТекущаяСтрока = Элемент.ПолучитьИдентификатор();
КонецПроцедуры

//////////////////////////////////////////////////////////////////////////////// 
// ОБРАБОТЧИКИ СОБЫТИЙ   
// 

&НаКлиенте
Процедура СписокТоваровВыборЗначения(Элемент, Значение, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	ДобавитьТовар(Значение);
КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Склад = Параметры.Склад;
	ВидЦен = Параметры.ВидЦен;
	СписокТоваров.Параметры.УстановитьЗначениеПараметра("Склад", Склад); 
	СписокТоваров.Параметры.УстановитьЗначениеПараметра("ВидЦен", ВидЦен); 
	АдресТоваровДокумента = Параметры.АдресТоваровДокумента;
	Товары.Загрузить(ПолучитьИзВременногоХранилища(АдресТоваровДокумента));
	
	Строки = Новый Массив;
	Если ЗначениеЗаполнено(Склад) Тогда
		Строки.Добавить(НСтр("ru = 'Склад: '", "ru"));
		Строки.Добавить(Новый ФорматированнаяСтрока(Склад.Наименование, ШрифтыСтиля.ШрифтВажнойИнформации, ЦветаСтиля.ЦветТекстаВажнойИнформации));
	КонецЕсли;
	
	Если ЗначениеЗаполнено(ВидЦен) Тогда
		Если ЗначениеЗаполнено(Склад) Тогда
			Строки.Добавить("     ");
		КонецЕсли;
		
		Строки.Добавить(НСтр("ru = 'Вид цен: '", "ru"));
		Строки.Добавить(Новый ФорматированнаяСтрока(ВидЦен.Наименование, ШрифтыСтиля.ШрифтВажнойИнформации, ЦветаСтиля.ЦветТекстаВажнойИнформации));
	КонецЕсли;
	
	ВидЦенИСклад = Новый ФорматированнаяСтрока(Строки);
КонецПроцедуры

&НаКлиенте
Процедура ОКВыполнить()
	ЗаписатьПодборВХранилище();
	ВладелецФормы.ОбработатьПодбор();
	Закрыть();
КонецПроцедуры

&НаКлиенте
Процедура ДеревоТоваровПриАктивизацииСтроки(Элемент)
	Элементы.СписокТоваров.ТекущийРодитель = Элемент.ТекущаяСтрока;
КонецПроцедуры

&НаКлиенте
Процедура ТоварыПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
	ДобавитьТовар(ПараметрыПеретаскивания.Значение);
	СтандартнаяОбработка = Ложь;	
КонецПроцедуры

&НаКлиенте
Процедура СписокТоваровНачалоПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
	Данные = Элементы.СписокТоваров.ДанныеСтроки(ПараметрыПеретаскивания.Значение);
	Если Данные <> Неопределено Тогда
		СтандартнаяОбработка = НЕ Данные.ЭтоГруппа;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ТоварыПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
	Данные = Элементы.СписокТоваров.ДанныеСтроки(ПараметрыПеретаскивания.Значение);
	Если Данные <> Неопределено И НЕ Данные.ЭтоГруппа Тогда
		СтандартнаяОбработка = Ложь;
	КонецЕсли;
КонецПроцедуры


